package main

import (
	"encoding/json"
	"fmt"
)

//定义一个结构体

type Monster struct {
	Name     string
	Age      int
	Birthday string
	Sal      float64
	Skill    string
}

func testStruct() {
	//演示
	monster := Monster{
		Name:     "牛魔王",
		Age:      500,
		Birthday: "1500-10-20",
		Sal:      8000.0,
		Skill:    "飞沙走石",
	}

	//将monster 序列化 Marshal()
	data, err := json.Marshal(&monster)
	if err != nil {
		fmt.Printf("序列化失败 err=%v\n", err)
	}
	//序列化后的结果
	fmt.Printf("monster序列化后=%v\n", string(data))
}

// 将map进行序列化
func testMap() {
	//定义
	var a map[string]interface{}

	//使用前 make 不make赋值会报错
	a = make(map[string]interface{})

	//前面两行可以写成一行 a := make(map[string]interface{})

	a["name"] = "红孩儿"
	a["age"] = 30

	//a 序列化 Marshal()
	data, err := json.Marshal(a)
	if err != nil {
		fmt.Printf("序列化失败 err=%v\n", err)
	}
	//序列化后的结果
	fmt.Printf("monster序列化后=%v\n", string(data))
}

// 演示结构体，map，切片进行序列化
func main() {
	testStruct()
	testMap()
}
